/*
给定一个未经排序的整数数组，找到最长且 连续递增的子序列，并返回该序列的长度。

连续递增的子序列 可以由两个下标 l 和 r（l < r）确定，如果对于每个 l <= i < r，
都有 nums[i] < nums[i + 1] ，那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。

输入：nums = [1,3,5,4,7]
输出：3
解释：最长连续递增序列是 [1,3,5], 长度为3。
尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的，因为 5 和 7 在原数组里被 4 隔开。 

输入：nums = [2,2,2,2,2]
输出：1
解释：最长连续递增序列是 [2], 长度为1。
*/

int findLengthOfLCIS_001(int* nums, int numsSize) {
    int ans = 0;
    int start = 0;
    for (int i = 0; i < numsSize; i++) {
        if (i > 0 && nums[i] <= nums[i - 1]) {
            start = i;
        }
        ans = fmax(ans, i - start + 1);
    }
    return ans;
}

//------------------------
int findLengthOfLCIS_002(int* nums, int numsSize){
    //特处，空数组情况
    if(numsSize == 0)   return 0;
    int maxlen = 1;
    int curlen = 1;
    for(int i = 0;i < numsSize - 1;i++){
        //如果递增，长度加一
        if(nums[i] < nums[i + 1])   curlen++;
        //否则不递增了，重新计算
        else curlen = 1;
        //判断最长的长度，保存在maxlen中
        maxlen = fmax(maxlen,curlen);
    }
    return maxlen;
}

//----------------
int findLengthOfLCIS_003(int* nums, int numsSize){
    if(numsSize < 1){
        return 0;
    }
    int lenTmp = 1;
    int maxLen = 1;
    for(int i=1; i<numsSize; i++){
        if(nums[i] > nums[i-1]){
            lenTmp++;
        }else{
            maxLen = fmax(maxLen, lenTmp);
            lenTmp = 1;
        }
    }
    maxLen = fmax(maxLen, lenTmp);
    return maxLen;
}


